package b3_priorityqueue;
import a4_queue.Queue;
import b2_heap.MaxHeap;
/**
 * 基于最大堆实现的优先级队列
 */
public class PriorityQueue implements Queue<Integer> {

    private MaxHeap heap;

    //构造方法中创建一个最大堆对象
    public PriorityQueue() {
        heap = new MaxHeap();
    }

    //入队
    @Override
    public void offer(Integer val) {
        heap.add(val);
    }

    //出队
    @Override
    public Integer poll() {
        return heap.extractMax();
    }

    //返回队首元素
    @Override
    public Integer peek() {
        return heap.peekMax();
    }

    //判断队列是否为空
    @Override
    public boolean isEmpty() {
        return heap.isEmpty();
    }
}
